package componentes;

import java.awt.Color;
import java.util.List;

public abstract class Jugador extends Thread{

	private Celda celda;
	List<Movimiento> estrategia;
	Jugador (){
		
	}
	Jugador(Celda c,List<Movimiento> estrategia){
		this.celda = c;
		celda.ponerJugador(this);
		this.estrategia = estrategia;
	}
	
	
	public abstract boolean esPosibleMover(Movimiento mov);
	
	public abstract boolean necesitoRespaldosAlSur();
	
	public abstract boolean esCoordPropia(Coordenada coord, int tamTablero);
	
	public abstract void sumarPuntos(Tablero tablero);
	
	public abstract void movFrontal() throws InterruptedException;
	
	public abstract String concatenarJugador();
	
	public abstract boolean comparteEquipo(Jugador j);
	
	public abstract Color miColor();
	
	public Celda getCelda(){
		return this.celda;
	}
	
	public void setCelda(Celda celda){
		this.celda = celda;
	}
	
	public boolean esSur(){
		return false;
	}
	public boolean esNorte(){
		return false;
	}
	
	public void setEstrategia(List<Movimiento> estrategia){
		this.estrategia = estrategia;
	}
	
	public void movEste() throws InterruptedException{
		this.celda.desplazarAlEste();
	}
	public void movOeste() throws InterruptedException{
		this.celda.desplazarAlOeste();
	}
	
	public void moverAl(Movimiento mov) throws InterruptedException{
		if(mov == Movimiento.ESTE)
			movEste();

		if(mov == Movimiento.OESTE)
			movOeste();

		if(mov == Movimiento.FRENTE)
			movFrontal();
		
	}
	
	@Override
	public void run() {
		for(Movimiento mov : this.estrategia)
			try {
				moverAl(mov);
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
	}
	
	
}
